<html>
<title>MARS 4.3 help contents
</title>
<body>
<center>
<h3>MARS - Mips Assembly and Runtime Simulator</h3>
<h4>Release 4.3</h4>
<h4>January 2013</h4>

<h4>Operating Requirements</h4>
</center>
<p>MARS is written in Java and 
requires at least Release 1.5 of the J2SE Java Runtime Environment (JRE) to work.  
The graphical IDE is implemented using Swing. It has been 
tested on Windows XP and Vista, Mac OS X, and is also being used under Linux.

<center>
<h4>Some MARS Assembler and Simulator Limitations</h4>
</center>

Releases 3.0 and later assemble and simulate nearly all the MIPS32 instructions documented in the 
textbook <i>Computer Organization and Design, Fourth Edition</i> by Patterson and Hennessy,
Elsevier - Morgan Kaufmann, 2009.  All basic and pseudo instructions, directives,
and system services described in Appendix B are implemented.
 
<p>Limitations of MARS as of Release 4.3 include:
<ul>
<li>Memory segments (text, data, stack, kernel text, kernel data) are limited to 4MB each starting at their
respective base addresses.</li>
<li>There is no pipelined mode (but delayed branching is supported).</li>
<li>Self-modifying code is not supported.  This is a program that during
execution modifies the contents of its own text segment (binary instructions).</li>
<li>If you open a file which is a link or shortcut to another file, MARS will <em>not</em>
open the target file.  The file open dialog is implemented using Java Swing's JFileChooser, 
which does not support links.</li>

<li>Very few configuration changes, besides those in the Settings menu, are saved from one session to the next.
The editor settings, which include font settings and display of line numbers, are saved.</li>

<li>The IDE will work only with the MARS assembler.  It cannot be used 
with any other compiler, assembler, or simulator.  The MARS assembler and simulator
can be used either through the IDE or from a command prompt.</li>

<li><em>Bug:</em>A couple of critical Alt-key combinations do not work with some European Mac keyboard layouts.  
For instance, the Italian Mac keyboard requires an Alt-key combination for the # symbol
and Swedish keyboards require an Alt-key combination for the $ symbol.  We do not have the equipment to
work on this bug, but would appreciate any of our European friends doing so.  
Start by checking <tt>mars.venus.editors.jeditsyntax.DefaultInputHandler.keyTyped()</tt>.
We've been told that workarounds include using the generic non-highlighting editor (checkbox in editor settings dialog) 
or switching to Windows/Linux.  Or paste from the outside world, use alternate character then replace-all, etc.</li>

<li><em>Bug:</em>The error message highlighter does not automatically select the code for the first assembly
error if the file containing the error is not open at the time of assembly (assemble-on-open, assemble-all).</li>

<li><em>Bug:</em> The Screen Magnifier screen capture feature does not appear to work properly under Windows Vista.</li>

<li><em>Bug:</em> There appears to be a memory leak in the Editor.  Several different people have independently
reported the same behavior: severe slowdown in editor response during an extended interactive session.  
If MARS is exited and restarted, this behavior disappears and the editor responds instantly to actions.</li>

<li><em>Not a bug, but documented here anyway:</em> MIPS Branch instruction target addresses are represented by
the relative number of words to branch.  With Release 3.4, this value reflects delayed branching,
regardless of whether the Delayed Branching setting is enabled or not.  
The generated binary code for branches will now match that of examples in the <em>Computer Organization
and Design</em> textbook.  This is a change from the past, and was made after extensive discussions 
with several faculty adopters of MARS.  Previously, the branch offset was 1 lower if the Delayed Branching setting
was enabled -- the instruction <tt>label: beq $0,$0,label</tt> would generate <tt>0x1000FFFF</tt> if
Delayed Branching was enabled and <tt>0x10000000</tt> if it was disabled.  Now it will generate <tt>0x1000FFFF</tt> in
either case.  The simulator will always branch to the correct location; MARS does not allow assembly under one
setting and simulation under the other to occur.</li>
</ul>
<p>
<hr>
<p>
This document is available for printing on the MARS home page
<tt><b>http://www.cs.missouristate.edu/MARS/</b></tt>.
</body>
</html>